package com.csj.DesignPattern.singleton.demo4;


// 懒汉式
// 双重锁
public class Singleton {

    private Singleton() {
    }
    //多线程下可能出现空指针异常，所以加了volatile保证有序性
    private static volatile Singleton instance;

    // 没有锁，效率更高
    public static Singleton getInstance() {
        //读操作 没有锁，可以直接返回
        if (instance == null) {
            //写操作 加锁
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
